﻿Public Class frmWysylkaSzukaj
    'formularz wyszukiwania wysyłek
    Private mvarZlecenie As clsSzukanieZlecenie
    Private mvarDbHolder As clsDataBase
    Private mvarSzukanieWysylki As clsSzukanieWysylek
    Private mvarWyznSprawdzeniaLiczby As Boolean
    Private mvarUzytkownik As clsUzytkownik

    Public Sub New()

        ' To wywołanie jest wymagane przez projektanta.
        InitializeComponent()

        ' Dodaj inicjację po wywołaniu funkcji InitializeComponent().
        mvarDbHolder = New clsDataBase(VAR_CONNECTION_PARAMETERS, VAR_ERROR_HANDLER)
        mvarUzytkownik = CType(clsUzytkownik.Instance(), clsUzytkownik)

        PobierzPracownikow()
        PobierzKlientow()
        PobierzStatusWysylki()

    End Sub

    Private Sub PobierzPracownikow()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsPracownik.PobierzWszystkichPracownikow(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                If CBool(lvarRow("aktywny").ToString) Then
                    cmbPracownik.Items.Add(New clsPracownik(lvarRow("id").ToString(), IIf(IsDBNull(lvarRow("numer")), String.Empty, lvarRow("numer")).ToString(), IIf(IsDBNull(lvarRow("imie")), String.Empty, lvarRow("imie")).ToString(), IIf(IsDBNull(lvarRow("nazwisko")), String.Empty, lvarRow("nazwisko")).ToString(), IIf(IsDBNull(lvarRow("login")), String.Empty, lvarRow("login")).ToString(), IIf(IsDBNull(lvarRow("haslo")), String.Empty, lvarRow("haslo")).ToString(), CBool(IIf(IsDBNull(lvarRow("aktywny")), String.Empty, lvarRow("aktywny")))))
                End If
            Next
        End If

    End Sub

    Private Sub PobierzKlientow()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsKlient.PobierzWszystkichKlientow(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbNazwaFirmy.Items.Add(New clsKlient(CInt(lvarRow("id")), IIf(IsDBNull(lvarRow("nazwa_pelna")), "", lvarRow("nazwa_pelna")).ToString(), IIf(IsDBNull(lvarRow("nazwa_skrocona")), "", lvarRow("nazwa_skrocona")).ToString(), IIf(IsDBNull(lvarRow("ulica")), "", lvarRow("ulica")).ToString(), IIf(IsDBNull(lvarRow("numer")), "", lvarRow("numer")).ToString(), IIf(IsDBNull(lvarRow("kod_pocztowy")), "", lvarRow("kod_pocztowy")).ToString(), IIf(IsDBNull(lvarRow("miejscowosc")), "", lvarRow("miejscowosc")).ToString(), CStr(IIf(IsDBNull(lvarRow("kraj")), "", lvarRow("kraj"))), IIf(IsDBNull(lvarRow("telefon")), "", lvarRow("telefon")).ToString(), IIf(IsDBNull(lvarRow("e_mail")), "", lvarRow("e_mail")).ToString(), IIf(IsDBNull(lvarRow("nip")), "", lvarRow("nip")).ToString(), IIf(IsDBNull(lvarRow("etykieta")), "", lvarRow("etykieta")).ToString(), IIf(IsDBNull(lvarRow("wysylka")), "", lvarRow("wysylka")).ToString(), IIf(IsDBNull(lvarRow("termin_platnosci")), "", lvarRow("termin_platnosci")).ToString(), IIf(IsDBNull(lvarRow("uwagi")), "", lvarRow("uwagi")).ToString()))
            Next
        End If

    End Sub

    Private Sub PobierzStatusWysylki()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsStatusWysylki.PobierzWszystkieOpcje(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                If lvarRow("nazwa").ToString() <> "nie rozpoczęta" Then
                    cmbStatusWysylki.Items.Add(New clsStatus(CInt(lvarRow("id")), CType(IIf(IsDBNull(lvarRow("nazwa")), "", lvarRow("nazwa")), String)))
                End If
            Next
        End If

    End Sub

    Private Sub SprawdzLiczbeCalkowita(ByVal Liczba1 As String)

        If IsNumeric(Liczba1) Then
            If InStr(Liczba1, ",") = Nothing And CInt(Liczba1) > 0 Then
                mvarWyznSprawdzeniaLiczby = True
            Else
                mvarWyznSprawdzeniaLiczby = False
            End If
        Else
            mvarWyznSprawdzeniaLiczby = False
        End If

    End Sub

    Private Sub Wyczysc()

        txtNumerWysylki.Text = String.Empty
        txtNumerZlecenia.Text = String.Empty
        cmbNazwaFirmy.SelectedIndex = -1
        cmbPracownik.SelectedIndex = -1
        cmbStatusWysylki.SelectedIndex = -1
        dtpOdDataUtworzenia.Value = Today.Date
        dtpOdDataUtworzenia.Value = Today.Date

        chkDataUtworzenia.Checked = False

    End Sub

    Private Sub Szukaj()

        Dim lvarCommand As String
        Dim lvarI As Integer
        Dim lvarWyzn As Boolean = False

        If txtNumerWysylki.Text <> String.Empty Then
            SprawdzLiczbeCalkowita(txtNumerWysylki.Text)
        End If

        If txtNumerWysylki.Text = String.Empty And txtNumerZlecenia.Text = String.Empty And cmbNazwaFirmy.SelectedIndex = -1 And dtpOdDataUtworzenia.Checked = False And dtpDoDataUtworzenia.Checked = False And chkDataUtworzenia.Checked = False And cmbPracownik.SelectedIndex = -1 And cmbStatusWysylki.SelectedIndex = -1 Then
            MessageBox.Show("Wybierz kryterium wyszukiwania", "WIREMET")
            dgvInformacje.Rows.Clear()
        Else
            If dtpOdDataUtworzenia.Value.Date > dtpDoDataUtworzenia.Value.Date Then
                MessageBox.Show("Wybierz poprawnie kryterium wyszukiwania", "WIREMET")
                dgvInformacje.Rows.Clear()
            Else
                If txtNumerWysylki.Text <> String.Empty Then
                    lvarCommand = lvarCommand & " AND wysylka.numer = '" & txtNumerWysylki.Text & "'"
                End If

                If txtNumerZlecenia.Text <> String.Empty Then
                    lvarCommand = lvarCommand & " AND zlecenie.numer = '" & txtNumerZlecenia.Text & "'"
                End If

                If cmbNazwaFirmy.SelectedIndex <> -1 Then
                    lvarCommand = lvarCommand & " AND klient.nazwa_skrocona= '" & cmbNazwaFirmy.SelectedItem.ToString & "'"
                End If

                If chkDataUtworzenia.Checked Then
                    lvarCommand = lvarCommand & " AND wysylka.data_wysylki::date between '" & dtpOdDataUtworzenia.Value.Date & "' AND '" & dtpDoDataUtworzenia.Value.Date & "'"
                End If

                If cmbPracownik.SelectedIndex <> -1 Then
                    lvarCommand = lvarCommand & " AND pracownik.nazwisko = '" & cmbPracownik.SelectedItem.ToString & "'"
                End If

                If cmbStatusWysylki.SelectedIndex <> -1 Then
                    lvarCommand = lvarCommand & " AND status_wysylki.nazwa = '" & cmbStatusWysylki.SelectedItem.ToString & "'"
                End If

                mvarSzukanieWysylki = New clsSzukanieWysylek
                mvarSzukanieWysylki.SzukajWysylekWedlugKryterium(mvarDbHolder, VAR_ERROR_HANDLER, lvarCommand)

                dgvInformacje.Rows.Clear()
                If mvarSzukanieWysylki.WysylkaWedlugKryterium.Rows.Count = 0 Then
                    MessageBox.Show("Nie ma takich wysyłek.", "WIREMET")
                Else
                    For Each lvarRow As DataRow In mvarSzukanieWysylki.WysylkaWedlugKryterium.Rows
                        lvarI += 1
                        dgvInformacje.Rows.Add(lvarI, lvarRow.Item("id_wysylki"), lvarRow.Item("numer_wysylki"), lvarRow.Item("id_zlecenia"), lvarRow.Item("nazwa_skrocona"), CType(lvarRow.Item("data"), Date).ToShortDateString, lvarRow.Item("status"))
                    Next
                End If
            End If
        End If

    End Sub


    Private Sub dgvInformacje_CellMouseDoubleClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvInformacje.CellMouseDoubleClick
        Try
            If dgvInformacje.SelectedRows.Count = 0 Then
                Throw New Exception("Proszę, wybierz wysyłkę, aby kontynuować.")
            End If

            Cursor = Cursors.WaitCursor

            Dim lvarId As Integer
            'szukanie id z tabeli tracking.zlecenie
            lvarId = clsInhTrZlecenie.PobierzIdZleceniaTr(mvarDbHolder, CInt(dgvInformacje.SelectedRows.Item(0).Cells("colIdZlecenia").Value))

            'If mvarUzytkownik.Uprawnienia("wysylka") <> "00" Then
            Dim lvarFrm As New frmWysylka2(lvarId, CInt(dgvInformacje.SelectedRows.Item(0).Cells("colIdWysylki").Value))
            With lvarFrm
                .MdiParent = MdiParent
                .Show()
            End With
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        Finally
            Cursor = Cursors.Default
        End Try
    End Sub

    Private Sub cmdSzukaj_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSzukaj.Click
        Szukaj()
    End Sub

    Private Sub cmdWyczyscSzczegoly_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdWyczyscSzczegoly.Click
        Wyczysc()
    End Sub

    Private Sub cmdEdycjaWysylekZlecenia_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEdycjaWysylekZlecenia.Click
        'frmWysylka(dgvInformacje.SelectedRows.Item(0).Cells("colIdZlecenia").Value, dgvInformacje.SelectedRows.Item(0).Cells("colIdWysylki").Value)
        If dgvInformacje.SelectedRows.Count > 0 Then
            Dim lvarId As Integer
            'szukanie id z tabeli tracking.zlecenie
            lvarId = clsInhTrZlecenie.PobierzIdZleceniaTr(mvarDbHolder, CInt(dgvInformacje.SelectedRows.Item(0).Cells("colIdZlecenia").Value))

            Dim lvarFrm As New frmWysylka2(lvarId, 0)
            With lvarFrm
                .MdiParent = mdiMain.ActiveForm
                .Show()
            End With
        Else
            MessageBox.Show("Wybierz wysyłkę.", "WIREMET")
        End If

    End Sub


    Private Sub dtpOdDataUtworzenia_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles dtpOdDataUtworzenia.ValueChanged
        chkDataUtworzenia.Checked = True
    End Sub

    Private Sub dtpDoDataUtworzenia_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles dtpDoDataUtworzenia.ValueChanged
        chkDataUtworzenia.Checked = True
    End Sub

 
    Private Sub frmWysylkaSzukaj_Load(sender As Object, e As EventArgs) Handles Me.Load
        dtpOdDataUtworzenia.Value = New Date(Today.Year, Today.Month, 1, 0, 0, 0)
    End Sub

    Private Sub frmWysylkaSzukaj_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        mvarDbHolder.Close()
    End Sub

    Private Sub cmdEdycjaWysylki_Click(sender As System.Object, e As System.EventArgs) Handles cmdEdycjaWysylki.Click

    End Sub

End Class